diff --git a/include/cmd_autoscript.h b/include/cmd_autoscript.h
new file mode 100644
index 0000000..520cfc9
--- /dev/null
+++ b/include/cmd_autoscript.h
@@ -0,0 +1,47 @@
+/*
+ * (C) Copyright 2001
+ * Kyle Harris, kharris@nexus-tech.net
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+#ifndef	_CMD_AUTOSCRIPT_H_
+#define	_CMD_AUTOSCRIPT_H_
+
+#define AUTOSCRIPT_MAGIC	0x09011962
+
+#if (CONFIG_COMMANDS & CFG_CMD_AUTOSCRIPT)
+
+#define	CMD_TBL_AUTOSCRIPT	MK_CMD_TBL_ENTRY(					\
+	"autoscr",	5,	2,	0,	do_autoscript,			\
+	"autoscr - run script from memory\n",				\
+	"[addr] - run script starting at addr. " \
+	"A valid autoscr header must be present\n" \
+),
+
+int autoscript (ulong addr);
+int do_autoscript (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
+
+#else
+
+#define	CMD_TBL_AUTOSCRIPT
+
+#endif
+
+#endif	/* _CMD_AUTOSCRIPT_H_ */
diff --git a/include/cmd_bedbug.h b/include/cmd_bedbug.h
new file mode 100644
index 0000000..105441e
--- /dev/null
+++ b/include/cmd_bedbug.h
@@ -0,0 +1,117 @@
+/*
+ * BedBug Functions
+ */
+#ifndef _CMD_BEDBUG_H
+#define _CMD_BEDBUG_H
+
+#if (CONFIG_COMMANDS & CFG_CMD_BEDBUG)
+
+#define CMD_TBL_DIS     MK_CMD_TBL_ENTRY(                               \
+        "ds",           2,      3,      1,      do_bedbug_dis,          \
+        "ds      - disassemble memory\n",                               \
+        "ds <address> [# instructions]\n"                               \
+        ),
+
+#define CMD_TBL_ASM     MK_CMD_TBL_ENTRY(                               \
+        "as",           2,      2,      0,      do_bedbug_asm,          \
+        "as      - assemble memory\n",                                  \
+        "as <address>\n"                                                \
+        ),
+
+#define CMD_TBL_BREAK   MK_CMD_TBL_ENTRY(                               \
+        "break",        2,      3,      0,      do_bedbug_break,        \
+        "break   - set or clear a breakpoint\n",                        \
+        " - Set or clear a breakpoint\n"                                \
+        "break <address> - Break at an address\n"                       \
+        "break off <bp#> - Disable breakpoint.\n"                       \
+        "break show      - List breakpoints.\n"                         \
+        ),
+
+#define CMD_TBL_CONTINUE        MK_CMD_TBL_ENTRY(                       \
+        "continue",     4,      1,      0,      do_bedbug_continue,     \
+        "continue- continue from a breakpoint\n",                       \
+        " - continue from a breakpoint.\n"                              \
+        ),
+
+#define CMD_TBL_STEP        MK_CMD_TBL_ENTRY(                           \
+        "step", 4,      1,      1,      do_bedbug_step,                 \
+        "step    - single step execution.\n",                           \
+        " - single step execution.\n"                                   \
+        ),
+
+#define CMD_TBL_NEXT        MK_CMD_TBL_ENTRY(                           \
+        "next", 4,      1,      1,      do_bedbug_next,                 \
+        "next    - single step execution, stepping over subroutines.\n",\
+        " - single step execution, stepping over subroutines.\n"        \
+        ),
+
+#define CMD_TBL_STACK        MK_CMD_TBL_ENTRY(                          \
+        "where", 5,     1,      1,      do_bedbug_stack,                \
+        "where   - Print the running stack.\n",                         \
+        " - Print the running stack.\n"                                 \
+        ),
+
+#define CMD_TBL_RDUMP        MK_CMD_TBL_ENTRY(                          \
+        "rdump", 5,     1,      1,      do_bedbug_rdump,                \
+        "rdump   - Show registers.\n",                                  \
+        " - Show registers.\n"                                          \
+        ),
+
+extern int do_bedbug_dis      (cmd_tbl_t *, int, int, char *[]);
+extern int do_bedbug_asm      (cmd_tbl_t *, int, int, char *[]);
+extern int do_bedbug_break    (cmd_tbl_t *, int, int, char *[]);
+extern int do_bedbug_continue (cmd_tbl_t *, int, int, char *[]);
+extern int do_bedbug_step     (cmd_tbl_t *, int, int, char *[]);
+extern int do_bedbug_next     (cmd_tbl_t *, int, int, char *[]);
+extern int do_bedbug_stack    (cmd_tbl_t *, int, int, char *[]);
+extern int do_bedbug_rdump    (cmd_tbl_t *, int, int, char *[]);
+
+/* Supporting routines */
+extern int bedbug_puts (const char *);
+extern void bedbug_init (void);
+extern void do_bedbug_breakpoint (struct pt_regs *);
+extern void bedbug_main_loop (unsigned long, struct pt_regs *);
+
+
+typedef struct {
+	int hw_debug_enabled;
+	int stopped;
+	int current_bp;
+	struct pt_regs *regs;
+
+	void (*do_break) (cmd_tbl_t *, int, int, char *[]);
+	void (*break_isr) (struct pt_regs *);
+	int (*find_empty) (void);
+	int (*set) (int, unsigned long);
+	int (*clear) (int);
+} CPU_DEBUG_CTX;
+
+#else /* ! CFG_CMD_BEDBUG */
+
+#define CMD_TBL_DIS
+#define CMD_TBL_ASM
+#define CMD_TBL_BREAK
+#define CMD_TBL_CONTINUE
+#define CMD_TBL_STEP
+#define CMD_TBL_NEXT
+#define CMD_TBL_STACK
+#define CMD_TBL_RDUMP
+
+#endif /* CFG_CMD_BEDBUG */
+#endif /* _CMD_BEDBUG_H */
+
+
+/*
+ * Copyright (c) 2001 William L. Pitts
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms are freely
+ * permitted provided that the above copyright notice and this
+ * paragraph and the following disclaimer are duplicated in all
+ * such forms.
+ *
+ * This software is provided "AS IS" and without any express or
+ * implied warranties, including, without limitation, the implied
+ * warranties of merchantability and fitness for a particular
+ * purpose.
+ */
diff --git a/include/cmd_bootm.h b/include/cmd_bootm.h
new file mode 100644
index 0000000..20c1267
--- /dev/null
+++ b/include/cmd_bootm.h
@@ -0,0 +1,65 @@
+/*
+ * (C) Copyright 2000
+ * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+/*
+ * Boot support
+ */
+#ifndef	_CMD_BOOTM_H
+#define	_CMD_BOOTM_H
+int do_bootm (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
+
+#define	CMD_TBL_BOOTM	MK_CMD_TBL_ENTRY(					\
+	"bootm",	5,	CFG_MAXARGS,	1,	do_bootm,		\
+	"bootm   - boot application image from memory\n",			\
+	"[addr [arg ...]]\n    - boot application image stored in memory\n"	\
+	"        passing arguments 'arg ...'; when booting a Linux kernel,\n"	\
+	"        'arg' can be the address of an initrd image\n"			\
+),
+
+#if (CONFIG_COMMANDS & CFG_CMD_BOOTD)
+int do_bootd (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
+
+#define CMD_TBL_BOOTD	MK_CMD_TBL_ENTRY(					\
+	"bootd",	4,	1,	1,	do_bootd,			\
+	"bootd   - boot default, i.e., run 'bootcmd'\n",			\
+	NULL									\
+),
+#else
+#define CMD_TBL_BOOTD
+#endif
+
+#if (CONFIG_COMMANDS & CFG_CMD_IMI)
+int do_iminfo (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
+#define	CMD_TBL_IMINFO	MK_CMD_TBL_ENTRY(					\
+	"iminfo",	3,	CFG_MAXARGS,	1,	do_iminfo,		\
+	"iminfo  - print header information for application image\n",		\
+	"addr [addr ...]\n"							\
+	"    - print header information for application image starting at\n"	\
+	"      address 'addr' in memory; this includes verification of the\n"	\
+	"      image contents (magic number, header and payload checksums)\n"	\
+),
+#else
+#define CMD_TBL_IMINFO
+#endif
+
+#endif	/* _CMD_BOOTM_H */
diff --git a/include/cmd_cache.h b/include/cmd_cache.h
new file mode 100644
index 0000000..479a846
--- /dev/null
+++ b/include/cmd_cache.h
@@ -0,0 +1,51 @@
+/*
+ * (C) Copyright 2000
+ * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+/*
+ * Cache support: switch on or off, get status
+ */
+#ifndef	_CMD_CACHE_H
+#define	_CMD_CACHE_H
+
+#if (CONFIG_COMMANDS & CFG_CMD_CACHE)
+#define	CMD_TBL_ICACHE	MK_CMD_TBL_ENTRY(					\
+	"icache",	2,	2,	1,	do_icache,			\
+	"icache  - enable or disable instruction cache\n",			\
+	"[on, off]\n"								\
+	"    - enable or disable instruction cache\n"				\
+),
+
+#define CMD_TBL_DCACHE	MK_CMD_TBL_ENTRY(					\
+	"dcache",	2,	2,	1,	do_dcache,			\
+	"dcache  - enable or disable data cache\n",				\
+	"[on, off]\n"								\
+	"    - enable or disable data (writethrough) cache\n"			\
+),
+int do_icache (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
+int do_dcache (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
+#else
+#define CMD_TBL_ICACHE
+#define CMD_TBL_DCACHE
+#endif	/* CFG_CMD_CACHE */
+
+#endif	/* _CMD_CACHE_H */
diff --git a/include/cmd_console.h b/include/cmd_console.h
new file mode 100644
index 0000000..4ac8b83
--- /dev/null
+++ b/include/cmd_console.h
@@ -0,0 +1,42 @@
+/*
+ * (C) Copyright 2000
+ * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+/*
+ * Network boot support
+ */
+#ifndef	_CMD_CONSOLE_H
+#define	_CMD_CONSOLE_H
+
+#if (CONFIG_COMMANDS & CFG_CMD_CONSOLE)
+#define	CMD_TBL_CONINFO	MK_CMD_TBL_ENTRY(			\
+	"coninfo",	5,	3,	1,	do_coninfo,	\
+	"coninfo - print console devices and informations\n",	\
+	""		 		 			\
+),
+int do_coninfo (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
+
+#else
+#define	CMD_TBL_CONINFO
+#endif	/* CFG_CMD_CONSOLE */
+
+#endif
diff --git a/include/cmd_dcr.h b/include/cmd_dcr.h
new file mode 100644
index 0000000..97196ad
--- /dev/null
+++ b/include/cmd_dcr.h
@@ -0,0 +1,55 @@
+/*
+ * (C) Copyright 2001
+ * Erik Theisen,  Wave 7 Optics, etheisen@mindspring.com.
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.	 See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+/*
+ * IBM 4XX DCR Functions
+ */
+#ifndef _CMD_DCR_H
+#define _CMD_DCR_H
+
+#if defined(CONFIG_4xx) && defined(CFG_CMD_SETGETDCR)
+#define CMD_TBL_GETDCR	MK_CMD_TBL_ENTRY(				\
+	"getdcr",	6,	2,	1,	do_getdcr,		\
+	"getdcr  - Get an IBM PPC 4xx DCR's value\n",			\
+	"dcrn - return a DCR's value.\n"				\
+),
+#define CMD_TBL_SETDCR	MK_CMD_TBL_ENTRY(				\
+	"setdcr",	6,	2,	1,	do_setdcr,		\
+	"setdcr  - Set an IBM PPC 4xx DCR's value\n",			\
+	"dcrn - set a DCR's value.\n"					\
+),
+extern int do_getdcr (cmd_tbl_t *, int, int, char *[]);
+extern int do_setdcr (cmd_tbl_t *, int, int, char *[]);
+
+/* Supporting routines */
+extern unsigned long get_dcr(unsigned short dcrn);
+extern unsigned long set_dcr(unsigned short dcrn, unsigned long value);
+
+#else
+
+#define CMD_TBL_GETDCR
+#define CMD_TBL_SETDCR
+
+#endif /* CONFIG_4xx & CFG_CMD_SETGETDCR */
+
+#endif	/* _CMD_DCR_H */
diff --git a/include/cmd_doc.h b/include/cmd_doc.h
new file mode 100644
index 0000000..07aa864
--- /dev/null
+++ b/include/cmd_doc.h
@@ -0,0 +1,55 @@
+/*
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+/*
+ * Disk-On-Chip support
+ */
+#ifndef	_CMD_DOC_H
+#define	_CMD_DOC_H
+
+#include <common.h>
+#include <command.h>
+
+
+#if (CONFIG_COMMANDS & CFG_CMD_DOC)
+#define	CMD_TBL_DOC	MK_CMD_TBL_ENTRY(					\
+	"doc",	3,	5,	1,	do_doc,					\
+	"doc     - Disk-On-Chip sub-system\n",					\
+	"info  - show available DOC devices\n"					\
+	"doc device [dev] - show or set current device\n"			\
+	"doc read  addr off size\n"						\
+	"doc write addr off size - read/write `size'"				\
+	" bytes starting at offset `off'\n"					\
+	"    to/from memory address `addr'\n"					\
+	"doc erase off size - erase `size' bytes of DOC from offset `off'\n"	\
+),
+
+#define CMD_TBL_DOCBOOT	MK_CMD_TBL_ENTRY(					\
+	"docboot", 4,	4,	1,	do_docboot,				\
+	"docboot - boot from DOC device\n",					\
+	"loadAddr dev\n"							\
+),
+
+int do_doc (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
+int do_docboot (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
+
+#else
+#define CMD_TBL_DOC
+#define CMD_TBL_DOCBOOT
+#endif
+
+#endif	/* _CMD_DOC_H */
diff --git a/include/cmd_dtt.h b/include/cmd_dtt.h
new file mode 100644
index 0000000..57192a3
--- /dev/null
+++ b/include/cmd_dtt.h
@@ -0,0 +1,46 @@
+/*
+ * (C) Copyright 2001
+ * Erik Theisen,  Wave 7 Optics, etheisen@mindspring.com.
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.	 See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+/*
+ * Read Digital Thermometers & Thermostats
+ */
+#ifndef _CMD_DTT_H
+#define _CMD_DTT_H
+
+#if (CONFIG_COMMANDS & CFG_CMD_DTT)
+
+#define CMD_TBL_DTT MK_CMD_TBL_ENTRY(				\
+	  "dtt",	3,	1,	1,	do_dtt,		\
+	  "dtt     - Digital Thermometer and Themostat\n",	\
+	  "        - Read temperature from digital thermometer and thermostat.\n" \
+),
+extern int do_dtt (cmd_tbl_t *, int, int, char *[]);
+
+#else
+
+#define CMD_TBL_DTT
+
+#endif /* (CONFIG_COMMANDS & CFG_CMD_DTT) */
+
+#endif	/* _CMD_DTT_H */
+
diff --git a/include/cmd_eeprom.h b/include/cmd_eeprom.h
new file mode 100644
index 0000000..26d929d
--- /dev/null
+++ b/include/cmd_eeprom.h
@@ -0,0 +1,59 @@
+/*
+ * (C) Copyright 2000
+ * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+/*
+ * EEPROM support
+ */
+#ifndef	_CMD_EEPROM_H
+#define	_CMD_EEPROM_H
+
+#include <common.h>
+#include <command.h>
+
+#if (CONFIG_COMMANDS & CFG_CMD_EEPROM)
+
+#ifdef CFG_I2C_MULTI_EEPROMS
+#define	CMD_TBL_EEPROM	MK_CMD_TBL_ENTRY(   \
+	"eeprom",	3,	6,	1,	do_eeprom,			\
+	"eeprom  - EEPROM sub-system\n",					\
+	"read  devaddr addr off cnt\n"						\
+	"eeprom write devaddr addr off cnt\n"					\
+	"       - read/write `cnt' bytes from `devaddr` EEPROM at offset `off'\n" \
+),
+#else /* One EEPROM */
+#define	CMD_TBL_EEPROM	MK_CMD_TBL_ENTRY(					\
+	"eeprom",	3,	5,	1,	do_eeprom,			\
+	"eeprom  - EEPROM sub-system\n",					\
+	"read  addr off cnt\n"							\
+	"eeprom write addr off cnt\n"						\
+	"       - read/write `cnt' bytes at EEPROM offset `off'\n"		\
+),
+#endif /* CFG_I2C_MULTI_EEPROMS */
+int do_eeprom (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
+#else
+
+#define CMD_TBL_EEPROM
+
+#endif	/* CFG_CMD_EEPROM */
+
+#endif	/* _CMD_EEPROM_H */
diff --git a/include/cmd_elf.h b/include/cmd_elf.h
new file mode 100644
index 0000000..64c52bc
--- /dev/null
+++ b/include/cmd_elf.h
@@ -0,0 +1,34 @@
+/*
+ * Elf Load/Boot Functions
+ */
+#ifndef	_CMD_ELF_H
+#define _CMD_ELF_H
+
+#if (CONFIG_COMMANDS & CFG_CMD_ELF)
+
+#define CMD_TBL_BOOTELF MK_CMD_TBL_ENTRY(                               \
+        "bootelf",      7,      2,      0,      do_bootelf,             \
+        "bootelf - Boot from an ELF image in memory\n",                 \
+        " [address] - load address of ELF image.\n"                     \
+        ),
+
+#define CMD_TBL_BOOTVX  MK_CMD_TBL_ENTRY(                               \
+        "bootvx",       6,      2,      0,      do_bootvx,              \
+        "bootvx  - Boot vxWorks from an ELF image\n",                   \
+        " [address] - load address of vxWorks ELF image.\n"             \
+        ),
+
+extern int do_bootelf (cmd_tbl_t *, int, int, char *[]);
+extern int do_bootvx (cmd_tbl_t *, int, int, char *[]);
+
+/* Supporting routines */
+extern int           valid_elf_image (unsigned long);
+extern unsigned long load_elf_image (unsigned long);
+
+#else	/* ! CFG_CMD_ELF */
+
+#define CMD_TBL_BOOTELF
+#define CMD_TBL_BOOTVX
+
+#endif	/* CFG_CMD_ELF */
+#endif	/* _CMD_ELF_H */
diff --git a/include/cmd_fdc.h b/include/cmd_fdc.h
new file mode 100644
index 0000000..f51df1f
--- /dev/null
+++ b/include/cmd_fdc.h
@@ -0,0 +1,47 @@
+/*
+ * (C) Copyright 2001
+ * Denis Peter, MPL AG, d.peter@mpl.ch
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+/*
+ * Floppy support
+ */
+#ifndef	_CMD_FDC_H
+#define	_CMD_FDC_H
+
+#include <common.h>
+#include <command.h>
+
+
+#if (CONFIG_COMMANDS & CFG_CMD_FDC)
+
+#define CMD_TBL_FDC	MK_CMD_TBL_ENTRY(					\
+	"fdcboot", 4,	3,	1,	do_fdcboot,				\
+	"fdcboot - boot from floppy device\n",					\
+	"loadAddr drive\n"							\
+),
+int do_fdcboot (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
+
+#else
+#define CMD_TBL_FDC
+#endif
+
+#endif	/* _CMD_FDC_H */
diff --git a/include/cmd_flash.h b/include/cmd_flash.h
new file mode 100644
index 0000000..6f5c6cd
--- /dev/null
+++ b/include/cmd_flash.h
@@ -0,0 +1,73 @@
+/*
+ * (C) Copyright 2000
+ * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+/*
+ * FLASH support
+ */
+#ifndef	_CMD_FLASH_H
+#define	_CMD_FLASH_H
+
+#if (CONFIG_COMMANDS & CFG_CMD_FLASH)
+#define	CMD_TBL_FLINFO	MK_CMD_TBL_ENTRY(					\
+	"flinfo",	3,	2,	1,	do_flinfo,			\
+	"flinfo  - print FLASH memory information\n",				\
+	"\n    - print information for all FLASH memory banks\n"		\
+	"flinfo N\n    - print information for FLASH memory bank # N\n"		\
+),
+
+#define	CMD_TBL_FLERASE	MK_CMD_TBL_ENTRY(					\
+	"erase",	3,	3,	1,	do_flerase,			\
+	"erase   - erase FLASH memory\n",					\
+	"start end\n"								\
+	"    - erase FLASH from addr 'start' to addr 'end'\n"			\
+	"erase N:SF[-SL]\n    - erase sectors SF-SL in FLASH bank # N\n"	\
+	"erase bank N\n    - erase FLASH bank # N\n"				\
+	"erase all\n    - erase all FLASH banks\n"				\
+),
+
+#define	CMD_TBL_PROTECT	MK_CMD_TBL_ENTRY(					\
+	"protect",	4,	4,	1,	do_protect,			\
+	"protect - enable or disable FLASH write protection\n",			\
+	"on  start end\n"							\
+	"    - protect FLASH from addr 'start' to addr 'end'\n"			\
+	"protect on  N:SF[-SL]\n"						\
+	"    - protect sectors SF-SL in FLASH bank # N\n"			\
+	"protect on  bank N\n    - protect FLASH bank # N\n"			\
+	"protect on  all\n    - protect all FLASH banks\n"			\
+	"protect off start end\n"						\
+	"    - make FLASH from addr 'start' to addr 'end' writable\n"		\
+	"protect off N:SF[-SL]\n"						\
+	"    - make sectors SF-SL writable in FLASH bank # N\n"			\
+	"protect off bank N\n    - make FLASH bank # N writable\n"		\
+	"protect off all\n    - make all FLASH banks writable\n"		\
+),
+int do_flinfo (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
+int do_flerase(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
+int do_protect(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
+#else
+#define CMD_TBL_FLINFO
+#define CMD_TBL_FLERASE
+#define CMD_TBL_PROTECT
+#endif	/* CFG_CMD_FLASH */
+
+#endif	/* _CMD_FLASH_H */
diff --git a/include/cmd_i2c.h b/include/cmd_i2c.h
new file mode 100644
index 0000000..7334fd4
--- /dev/null
+++ b/include/cmd_i2c.h
@@ -0,0 +1,103 @@
+/*
+ * (C) Copyright 2001
+ * Gerald Van Baren, Custom IDEAS, vanbaren@cideas.com.
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+/*
+ * I2C Functions
+ */
+#ifndef	_CMD_I2C_H
+#define _CMD_I2C_H
+
+#if (CONFIG_COMMANDS & CFG_CMD_I2C)
+#define CMD_TBL_IMD	MK_CMD_TBL_ENTRY(				\
+	"imd",		3,	4,	1,	do_i2c_md,		\
+	"imd     - i2c memory display\n",				\
+	"chip address[.0, .1, .2] [# of objects]\n    - i2c memory display\n" \
+),
+#define CMD_TBL_IMM	MK_CMD_TBL_ENTRY(				\
+ 	"imm",		3,	3,	1,	do_i2c_mm,		\
+	"imm     - i2c memory modify (auto-incrementing)\n",		\
+	"chip address[.0, .1, .2]\n"					\
+	"    - memory modify, auto increment address\n"			\
+),
+#define CMD_TBL_INM	MK_CMD_TBL_ENTRY(				\
+	"inm",		3,	3,	1,	do_i2c_nm,		\
+	"inm     - memory modify (constant address)\n",			\
+	"chip address[.0, .1, .2]\n    - memory modify, read and keep address\n" \
+),
+#define CMD_TBL_IMW	MK_CMD_TBL_ENTRY(				\
+	"imw",		3,	5,	1,	do_i2c_mw,		\
+	"imw     - memory write (fill)\n",				\
+	"chip address[.0, .1, .2] value [count]\n    - memory write (fill)\n" \
+),
+#define	CMD_TBL_ICRC	MK_CMD_TBL_ENTRY(				\
+	"icrc32",	4,	5,	1,	do_i2c_crc,		\
+	"icrc32  - checksum calculation\n",				\
+	"chip address[.0, .1, .2] count\n    - compute CRC32 checksum\n" \
+),
+#define CMD_TBL_IPROBE	MK_CMD_TBL_ENTRY(				\
+	"iprobe",	3,	1,	1,	do_i2c_probe,		\
+	"iprobe  - probe to discover valid I2C chip addresses\n",	\
+	"\n    -discover valid I2C chip addresses\n"			\
+),
+/*
+ * Require full name for "iloop" because it is an infinite loop!
+ */
+#define CMD_TBL_ILOOP	MK_CMD_TBL_ENTRY(				\
+	"iloop",	5,	5,	1,	do_i2c_loop,		\
+	"iloop   - infinite loop on address range\n",			\
+	"chip address[.0, .1, .2] [# of objects]\n"			\
+	"    - loop, reading a set of addresses\n"			\
+),
+#if (CONFIG_COMMANDS & CFG_CMD_SDRAM)
+#define CMD_TBL_ISDRAM	MK_CMD_TBL_ENTRY(				\
+	"isdram",	6,	2,	1,	do_sdram,		\
+	"isdram  - print SDRAM configuration information\n",		\
+	"chip\n    - print SDRAM configuration information\n"		\
+	"      (valid chip values 50..57)\n"				\
+),
+#else
+#define CMD_TBL_ISDRAM
+#endif
+
+
+int do_i2c_md(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
+int do_i2c_mm(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
+int do_i2c_nm(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
+int do_i2c_mw(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
+int do_i2c_crc(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
+int do_i2c_probe(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
+int do_i2c_loop(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
+int do_sdram(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
+
+#else
+#define CMD_TBL_IMD
+#define CMD_TBL_IMM
+#define CMD_TBL_INM
+#define CMD_TBL_IMW
+#define CMD_TBL_ICRC
+#define CMD_TBL_IPROBE
+#define CMD_TBL_ILOOP
+#define CMD_TBL_ISDRAM
+#endif	/* CFG_CMD_MEMORY */
+
+#endif	/* _CMD_I2C_H */
diff --git a/include/cmd_ide.h b/include/cmd_ide.h
new file mode 100644
index 0000000..0433c20
--- /dev/null
+++ b/include/cmd_ide.h
@@ -0,0 +1,62 @@
+/*
+ * (C) Copyright 2000
+ * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+/*
+ * IDE support
+ */
+#ifndef	_CMD_IDE_H
+#define	_CMD_IDE_H
+
+#include <common.h>
+#include <command.h>
+
+
+#if (CONFIG_COMMANDS & CFG_CMD_IDE)
+#define	CMD_TBL_IDE	MK_CMD_TBL_ENTRY(					\
+	"ide",	3,	5,	1,	do_ide,					\
+	"ide     - IDE sub-system\n",						\
+	"reset - reset IDE controller\n"					\
+	"ide info  - show available IDE devices\n"				\
+	"ide device [dev] - show or set current device\n"			\
+	"ide part [dev] - print partition table of one or all IDE devices\n"	\
+	"ide read  addr blk# cnt\n"						\
+	"ide write addr blk# cnt - read/write `cnt'"				\
+	" blocks starting at block `blk#'\n"					\
+	"    to/from memory address `addr'\n"					\
+),
+
+#define CMD_TBL_DISK	MK_CMD_TBL_ENTRY(					\
+	"diskboot", 4,	3,	1,	do_diskboot,				\
+	"diskboot- boot from IDE device\n",					\
+	"loadAddr dev:part\n"							\
+),
+
+int do_ide (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
+int do_diskboot (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
+
+#else
+#define CMD_TBL_IDE
+#define CMD_TBL_DISK
+#endif
+
+#endif	/* _CMD_IDE_H */
diff --git a/include/cmd_immap.h b/include/cmd_immap.h
new file mode 100644
index 0000000..9febee2
--- /dev/null
+++ b/include/cmd_immap.h
@@ -0,0 +1,181 @@
+/*
+ * (C) Copyright 2000
+ * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+/*
+ * PowerPC 8xx/8260 Internal Memory Map commands
+ */
+#ifndef	_CMD_IMMAP_H
+#define	_CMD_IMMAP_H
+
+#if (CONFIG_COMMANDS & CFG_CMD_IMMAP) && \
+    (defined(CONFIG_8xx) || defined(CONFIG_8260))
+
+#define	CMD_TBL_SIUINFO		MK_CMD_TBL_ENTRY(			\
+	"siuinfo",	3,	1,	1,	do_siuinfo,		\
+	"siuinfo - print System Interface Unit (SIU) registers\n",	\
+	NULL								\
+),
+
+#define CMD_TBL_MEMCINFO	MK_CMD_TBL_ENTRY(			\
+	"memcinfo",	4,	1,	1,	do_memcinfo,		\
+	"memcinfo- print Memory Controller registers\n",		\
+	NULL								\
+),
+
+#define CMD_TBL_SITINFO		MK_CMD_TBL_ENTRY(			\
+	"sitinfo",	3,	1,	1,	do_sitinfo,		\
+	"sitinfo - print System Integration Timers (SIT) registers\n",	\
+	NULL								\
+),
+
+#ifdef CONFIG_8260
+#define	CMD_TBL_ICINFO		MK_CMD_TBL_ENTRY(			\
+	"icinfo",	3,	1,	1,	do_icinfo,		\
+	"icinfo  - print Interrupt Controller registers\n",		\
+	NULL								\
+),
+#endif
+
+#define	CMD_TBL_CARINFO		MK_CMD_TBL_ENTRY(			\
+	"carinfo",	3,	1,	1,	do_carinfo,		\
+	"carinfo - print Clocks and Reset registers\n",			\
+	NULL								\
+),
+
+#define	CMD_TBL_IOPINFO		MK_CMD_TBL_ENTRY(			\
+	"iopinfo",	4,	1,	1,	do_iopinfo,		\
+	"iopinfo - print I/O Port registers\n",				\
+	NULL								\
+),
+
+#define	CMD_TBL_IOPSET 		MK_CMD_TBL_ENTRY(			\
+	"iopset",	4,	5,	0,	do_iopset,		\
+	"iopset - set I/O Port registers\n",				\
+	"PORT PIN CMD VALUE\nPORT: A-D, PIN: 0-31, CMD: [dat|dir|odr|sor], VALUE: 0|1" \
+),
+
+#define	CMD_TBL_DMAINFO		MK_CMD_TBL_ENTRY(			\
+	"dmainfo",	3,	1,	1,	do_dmainfo,		\
+	"dmainfo - print SDMA/IDMA registers\n",			\
+	NULL								\
+),
+
+#define	CMD_TBL_FCCINFO		MK_CMD_TBL_ENTRY(			\
+	"fccinfo",	3,	1,	1,	do_fccinfo,		\
+	"fccinfo - print FCC registers\n",				\
+	NULL								\
+),
+
+#define	CMD_TBL_BRGINFO		MK_CMD_TBL_ENTRY(			\
+	"brginfo",	3,	1,	1,	do_brginfo,		\
+	"brginfo - print Baud Rate Generator (BRG) registers\n",	\
+	NULL								\
+),
+
+#define	CMD_TBL_I2CINFO		MK_CMD_TBL_ENTRY(			\
+	"i2cinfo",	4,	1,	1,	do_i2cinfo,		\
+	"i2cinfo - print I2C registers\n",				\
+	NULL								\
+),
+
+#define	CMD_TBL_SCCINFO		MK_CMD_TBL_ENTRY(			\
+	"sccinfo",	3,	1,	1,	do_sccinfo,		\
+	"sccinfo - print SCC registers\n",				\
+	NULL								\
+),
+
+#define	CMD_TBL_SMCINFO		MK_CMD_TBL_ENTRY(			\
+	"smcinfo",	3,	1,	1,	do_smcinfo,		\
+	"smcinfo - print SMC registers\n",				\
+	NULL								\
+),
+
+#define	CMD_TBL_SPIINFO		MK_CMD_TBL_ENTRY(			\
+	"spiinfo",	3,	1,	1,	do_spiinfo,		\
+	"spiinfo - print Serial Peripheral Interface (SPI) registers\n",\
+	NULL								\
+),
+
+#define	CMD_TBL_MUXINFO		MK_CMD_TBL_ENTRY(			\
+	"muxinfo",	3,	1,	1,	do_muxinfo,		\
+	"muxinfo - print CPM Multiplexing registers\n",			\
+	NULL								\
+),
+
+#define	CMD_TBL_SIINFO		MK_CMD_TBL_ENTRY(			\
+	"siinfo",	3,	1,	1,	do_siinfo,		\
+	"siinfo  - print Serial Interface (SI) registers\n",		\
+	NULL								\
+),
+
+#define	CMD_TBL_MCCINFO		MK_CMD_TBL_ENTRY(			\
+	"mccinfo",	3,	1,	1,	do_mccinfo,		\
+	"mccinfo - print MCC registers\n",				\
+	NULL								\
+),
+
+int do_siuinfo (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
+int do_memcinfo(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
+int do_sitinfo (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
+#ifdef CONFIG_8260
+int do_icinfo  (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
+#endif
+int do_carinfo (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
+int do_iopinfo (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
+int do_iopset  (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
+int do_dmainfo (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
+int do_fccinfo (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
+int do_brginfo (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
+int do_i2cinfo (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
+int do_sccinfo (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
+int do_smcinfo (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
+int do_spiinfo (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
+int do_muxinfo (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
+int do_siinfo  (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
+int do_mccinfo (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
+
+#else
+
+#define CMD_TBL_SIUINFO
+#define CMD_TBL_MEMCINFO
+#define CMD_TBL_SITINFO
+#ifdef CONFIG_8260
+#define	CMD_TBL_ICINFO
+#endif
+#define	CMD_TBL_CARINFO
+#define	CMD_TBL_IOPINFO
+#define	CMD_TBL_IOPSET
+#define	CMD_TBL_DMAINFO
+#define	CMD_TBL_FCCINFO
+#define	CMD_TBL_BRGINFO
+#define	CMD_TBL_I2CINFO
+#define	CMD_TBL_SCCINFO
+#define	CMD_TBL_SMCINFO
+#define	CMD_TBL_SPIINFO
+#define	CMD_TBL_MUXINFO
+#define	CMD_TBL_SIINFO
+#define	CMD_TBL_MCCINFO
+
+#endif	/* CFG_CMD_IMMAP && (CONFIG_8xx || CONFIG_8260) */
+
+#endif	/* _CMD_IMMAP_H */
diff --git a/include/cmd_mem.h b/include/cmd_mem.h
new file mode 100644
index 0000000..aa0c540
--- /dev/null
+++ b/include/cmd_mem.h
@@ -0,0 +1,112 @@
+/*
+ * (C) Copyright 2000
+ * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+/*
+ * Memory Functions
+ */
+#ifndef	_CMD_MEM_H
+#define _CMD_MEM_H
+
+#if (CONFIG_COMMANDS & CFG_CMD_MEMORY)
+#define CMD_TBL_MD	MK_CMD_TBL_ENTRY(					\
+	"md",		2,	3,	1,	do_mem_md,			\
+	"md      - memory display\n",						\
+	"[.b, .w, .l] address [# of objects]\n    - memory display\n"		\
+),
+#define CMD_TBL_MM	MK_CMD_TBL_ENTRY(					\
+ 	"mm",		2,	2,	1,	do_mem_mm,			\
+	"mm      - memory modify (auto-incrementing)\n",			\
+	"[.b, .w, .l] address\n"						\
+	"    - memory modify, auto increment address\n"				\
+),
+#define CMD_TBL_NM	MK_CMD_TBL_ENTRY(					\
+	"nm",		2,	2,	1,	do_mem_nm,			\
+	"nm      - memory modify (constant address)\n",				\
+	"[.b, .w, .l] address\n    - memory modify, read and keep address\n"	\
+),
+#define CMD_TBL_MW	MK_CMD_TBL_ENTRY(					\
+	"mw",		2,	4,	1,	do_mem_mw,			\
+	"mw      - memory write (fill)\n",					\
+	"[.b, .w, .l] address value [count]\n    - write memory\n"		\
+),
+#define	CMD_TBL_CP	MK_CMD_TBL_ENTRY(					\
+	"cp",		2,	4,	1,	do_mem_cp,			\
+	"cp      - memory copy\n",						\
+	"[.b, .w, .l] source target count\n    - copy memory\n"			\
+),
+#define	CMD_TBL_CMP	MK_CMD_TBL_ENTRY(					\
+	"cmp",		3,	4,	1,	do_mem_cmp,			\
+	"cmp     - memory compare\n",						\
+	"[.b, .w, .l] addr1 addr2 count\n    - compare memory\n"		\
+),
+#define	CMD_TBL_CRC	MK_CMD_TBL_ENTRY(					\
+	"crc32",	3,	4,	1,	do_mem_crc,			\
+	"crc32   - checksum calculation\n",					\
+	"address count [addr]\n    - compute CRC32 checksum [save at addr]\n"	\
+),
+#define CMD_TBL_BASE	MK_CMD_TBL_ENTRY(					\
+	"base",		2,	2,	1,	do_mem_base,			\
+	"base    - print or set address offset\n",				\
+	"\n    - print address offset for memory commands\n"			\
+	"base off\n    - set address offset for memory commands to 'off'\n"	\
+),
+/*
+ * Require full name for "loop" and "mtest" because these are infinite loops!
+ */
+#define CMD_TBL_LOOP	MK_CMD_TBL_ENTRY(					\
+	"loop",		4,	3,	1,	do_mem_loop,			\
+	"loop    - infinite loop on address range\n",				\
+	"[.b, .w, .l] address number_of_objects\n"				\
+	"    - loop on a set of addresses\n"					\
+),
+#define CMD_TBL_MTEST	MK_CMD_TBL_ENTRY(					\
+	"mtest",	5,	4,	1,	do_mem_mtest,			\
+	"mtest   - simple RAM test\n",						\
+	"[start [end [pattern]]]\n"						\
+	"    - simple RAM read/write test\n"					\
+),
+int do_mem_md    (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
+int do_mem_mm    (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
+int do_mem_nm    (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
+int do_mem_mw    (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
+int do_mem_cp    (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
+int do_mem_cmp   (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
+int do_mem_crc   (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
+int do_mem_base  (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
+int do_mem_loop  (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
+int do_mem_mtest (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
+
+#else
+#define CMD_TBL_MD
+#define CMD_TBL_MM
+#define CMD_TBL_NM
+#define CMD_TBL_MW
+#define CMD_TBL_CP
+#define CMD_TBL_CMP
+#define CMD_TBL_CRC
+#define CMD_TBL_BASE
+#define CMD_TBL_LOOP
+#define CMD_TBL_MTEST
+#endif	/* CFG_CMD_MEMORY */
+
+#endif	/* _CMD_MEM_H */
diff --git a/include/cmd_mii.h b/include/cmd_mii.h
new file mode 100644
index 0000000..7ded0cc
--- /dev/null
+++ b/include/cmd_mii.h
@@ -0,0 +1,46 @@
+/*
+ * (C) Copyright 2001
+ * Gerald Van Baren, Custom IDEAS, vanbaren@cideas.com
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+/*
+ * MII Functions
+ */
+#ifndef	_CMD_MII_H
+#define _CMD_MII_H
+
+#if (CONFIG_COMMANDS & CFG_CMD_MII)
+#define CMD_TBL_MII	MK_CMD_TBL_ENTRY(				\
+	"mii",		3,	5,	1,	do_mii,			\
+	"mii     - MII utility commands\n",				\
+	"\
+info  <addr>              - display MII PHY info\n\
+mii read  <addr> <reg>        - read  MII PHY <addr> register <reg>\n\
+mii write <addr> <reg> <data> - write MII PHY <addr> register <reg>\n"	\
+),
+
+int do_mii       (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
+
+#else
+#define CMD_TBL_MII
+#endif	/* CFG_CMD_MII */
+
+#endif	/* _CMD_MII_H */
diff --git a/include/cmd_misc.h b/include/cmd_misc.h
new file mode 100644
index 0000000..873f5c4
--- /dev/null
+++ b/include/cmd_misc.h
@@ -0,0 +1,58 @@
+/*
+ * (C) Copyright 2000
+ * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+/*
+ * Miscellanious commands
+ */
+#ifndef	_CMD_MISC_H
+#define	_CMD_MISC_H
+
+#if (CONFIG_COMMANDS & CFG_CMD_IRQ)
+#define CMD_TBL_IRQINFO	MK_CMD_TBL_ENTRY(					\
+	"irqinfo",      3,	1,	1,	do_irqinfo,			\
+	"irqinfo - print information about IRQs\n",				\
+	NULL									\
+),
+
+/* Implemented in $(CPU)/interrupts.c */
+int do_irqinfo (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
+
+#else
+#define CMD_TBL_IRQINFO
+#endif  /* CONFIG_COMMANDS & CFG_CMD_IRQ */
+
+#if (CONFIG_COMMANDS & CFG_CMD_MISC)
+#define	CMD_TBL_MISC	MK_CMD_TBL_ENTRY(					\
+	"sleep",	5,	2,	2,	do_sleep,			\
+	"sleep   - delay execution for some time\n",				\
+	"N\n"									\
+	"    - delay execution for N seconds (N is _decimal_ !!!)\n"		\
+),
+
+/* Implemented in common/cmd_misc.c */
+int do_sleep (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
+#else
+#define CMD_TBL_MISC
+#endif	/* CFG_CMD_MISC */
+
+#endif	/* _CMD_MISC_H */
diff --git a/include/cmd_net.h b/include/cmd_net.h
new file mode 100644
index 0000000..2fa848b
--- /dev/null
+++ b/include/cmd_net.h
@@ -0,0 +1,74 @@
+/*
+ * (C) Copyright 2000
+ * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+/*
+ * Network boot support
+ */
+#ifndef	_CMD_NET_H
+#define	_CMD_NET_H
+
+#if (CONFIG_COMMANDS & CFG_CMD_NET)
+#define	CMD_TBL_BOOTP	MK_CMD_TBL_ENTRY(					\
+	"bootp",	5,	3,	1,	do_bootp,			\
+	"bootp   - boot image via network using BootP/TFTP protocol\n",		\
+	"[loadAddress] [bootfilename]\n" 		 			\
+),
+int do_bootp (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
+#define	CMD_TBL_TFTPB	MK_CMD_TBL_ENTRY(					\
+	"tftpboot",	4,	3,	1,	do_tftpb,			\
+	"tftpboot- boot image via network using TFTP protocol\n"		\
+	"               and env variables ipaddr and serverip\n",		\
+	"[loadAddress] [bootfilename]\n" 		 			\
+),
+
+int do_tftpb (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
+
+
+#define	CMD_TBL_RARPB	MK_CMD_TBL_ENTRY(					\
+	"rarpboot",	4,	3,	1,	do_rarpb,			\
+	"rarpboot- boot image via network using RARP/TFTP protocol\n",		\
+	"[loadAddress] [bootfilename]\n" 		 			\
+),
+
+int do_rarpb (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
+
+#if (CONFIG_COMMANDS & CFG_CMD_DHCP)
+#define	CMD_TBL_DHCP	MK_CMD_TBL_ENTRY(					\
+	"dhcp",		4,	3,	1,	do_dhcp,			\
+	"dhcp    - invoke DHCP client to obtain IP/boot params\n",		\
+	"\n" 						 			\
+),
+
+int do_dhcp (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
+#else
+#define CMD_TBL_DHCP
+#endif	/* CFG_CMD_DHCP */
+
+#else
+#define CMD_TBL_BOOTP
+#define CMD_TBL_TFTPB
+#define CMD_TBL_RARPB
+#define CMD_TBL_DHCP
+#endif	/* CFG_CMD_NET */
+
+#endif
diff --git a/include/cmd_nvedit.h b/include/cmd_nvedit.h
new file mode 100644
index 0000000..345127d
--- /dev/null
+++ b/include/cmd_nvedit.h
@@ -0,0 +1,91 @@
+/*
+ * (C) Copyright 2000
+ * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+/*
+ * Boot support
+ */
+#ifndef	_CMD_NVEDIT_H
+#define	_CMD_NVEDIT_H
+
+#define	CMD_TBL_PRINTENV	MK_CMD_TBL_ENTRY(				\
+	"printenv",	4,	CFG_MAXARGS,	1,	do_printenv,		\
+	"printenv- print environment variables\n",				\
+	"\n    - print values of all environment variables\n"			\
+	"printenv name ...\n"							\
+	"    - print value of environment variable 'name'\n"			\
+),
+int do_printenv (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
+
+#define CMD_TBL_SETENV		MK_CMD_TBL_ENTRY(				\
+	"setenv",	6,	CFG_MAXARGS,	0,	do_setenv,		\
+	"setenv  - set environment variables\n",				\
+	"name value ...\n"							\
+	"    - set environment variable 'name' to 'value ...'\n"		\
+	"setenv name\n"								\
+	"    - delete environment variable 'name'\n"				\
+),
+int do_setenv   (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
+
+#if ((CONFIG_COMMANDS & (CFG_CMD_ENV|CFG_CMD_FLASH)) == (CFG_CMD_ENV|CFG_CMD_FLASH))
+#define	CMD_TBL_SAVEENV		MK_CMD_TBL_ENTRY(				\
+	"saveenv",	4,	1,		0,	do_saveenv,		\
+	"saveenv - save environment variables to persistent storage\n",		\
+	NULL									\
+),
+int do_saveenv  (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
+#else
+#define CMD_TBL_SAVEENV
+#endif	/* CFG_CMD_ENV */
+
+#if (CONFIG_COMMANDS & CFG_CMD_ASKENV)
+#define CMD_TBL_ASKENV		MK_CMD_TBL_ENTRY(				\
+	"askenv",	8,	CFG_MAXARGS,	1,	do_askenv,		\
+	"askenv  - get environment variables from stdin\n",			\
+	"name [message] [size]\n"						\
+	"    - get environment variable 'name' from stdin (max 'size' chars)\n"	\
+	"askenv name\n"								\
+	"    - get environment variable 'name' from stdin\n"			\
+	"askenv name size\n"							\
+	"    - get environment variable 'name' from stdin (max 'size' chars)\n"	\
+	"askenv name [message] size\n"						\
+	"    - display 'message' string and get environment variable 'name'"	\
+	"from stdin (max 'size' chars)\n"					\
+),
+int do_askenv   (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
+#else
+#define CMD_TBL_ASKENV
+#endif	/* CFG_CMD_ASKENV */
+
+#if (CONFIG_COMMANDS & CFG_CMD_RUN)
+#define	CMD_TBL_RUN	MK_CMD_TBL_ENTRY(					\
+	"run",	3,	CFG_MAXARGS,	1,	do_run,				\
+	"run     - run commands in an environment variable\n",			\
+	"var [...]\n"								\
+	"    - run the commands in the environment variable(s) 'var'\n"		\
+),
+int do_run (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
+#else
+#define CMD_TBL_RUN
+#endif  /* CFG_CMD_RUN */
+
+#endif	/* _CMD_NVEDIT_H */
diff --git a/include/cmd_pcmcia.h b/include/cmd_pcmcia.h
new file mode 100644
index 0000000..24a207b
--- /dev/null
+++ b/include/cmd_pcmcia.h
@@ -0,0 +1,44 @@
+/*
+ * (C) Copyright 2000
+ * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+/*
+ * PCMCIA support
+ */
+#ifndef	_CMD_PCMCIA_H
+#define	_CMD_PCMCIA_H
+
+#if (CONFIG_COMMANDS & CFG_CMD_PCMCIA)
+#define	CMD_TBL_PINIT	MK_CMD_TBL_ENTRY(					\
+	"pinit",	4,	2,	1,	do_pinit,			\
+	"pinit   - PCMCIA sub-system\n",					\
+	"on  - power on PCMCIA socket\n"					\
+	"pinit off - power off PCMCIA socket\n"					\
+),
+
+int do_pinit (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
+#else
+#define CMD_TBL_PINIT
+#endif
+
+#endif	/* _CMD_PCMCIA_H */
+
diff --git a/include/cmd_reginfo.h b/include/cmd_reginfo.h
new file mode 100644
index 0000000..d4e995d
--- /dev/null
+++ b/include/cmd_reginfo.h
@@ -0,0 +1,40 @@
+/*
+ * (C) Copyright 2000
+ * Subodh Nijsure, SkyStream Networks, snijsure@skystream.com
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+#ifndef	_CMD_REGINFO_H_
+#define	_CMD_REGINFO_H_
+
+#if (defined(CONFIG_8xx) || defined(CONFIG_405GP)) && \
+    (CONFIG_COMMANDS & CFG_CMD_REGINFO)
+#define	CMD_TBL_REGINFO	MK_CMD_TBL_ENTRY(					\
+	"reginfo",	3,	2,	1,	do_reginfo,			\
+	"reginfo - print register information\n",				\
+),
+
+int do_reginfo (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
+
+#else
+#define CMD_TBL_REGINFO
+#endif	/* CONFIG_8xx && CFG_CMD_REGINFO */
+
+#endif	/* _CMD_REGINFO_H_ */
diff --git a/include/cmd_rtc.h b/include/cmd_rtc.h
new file mode 100644
index 0000000..2149f78
--- /dev/null
+++ b/include/cmd_rtc.h
@@ -0,0 +1,50 @@
+/*
+ * (C) Copyright 2001
+ * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.	 See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+#ifndef _CMD_RTC_H_
+#define _CMD_RTC_H_
+
+#include <common.h>
+#include <command.h>
+
+#if (CONFIG_COMMANDS & CFG_CMD_DATE)
+
+#define CMD_TBL_DATE	MK_CMD_TBL_ENTRY(					\
+	"date", 3,	2,	1,	do_date,				\
+	"date    - get/set/reset date & time\n",				\
+	"[MMDDhhmm[[CC]YY][.ss]]\ndate reset\n"					\
+	"  - without arguments: print date & time\n"				\
+	"  - with numeric argument: set the system date & time\n"		\
+	"  - with 'reset' argument: reset the RTC\n"				\
+),
+
+int do_date (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
+
+#else
+
+#define CMD_TBL_DATE
+
+#endif	/* CFG_CMD_DATE */
+
+
+#endif	/* _CMD_RTC_H_ */
diff --git a/include/cmd_scsi.h b/include/cmd_scsi.h
new file mode 100644
index 0000000..4dca059
--- /dev/null
+++ b/include/cmd_scsi.h
@@ -0,0 +1,62 @@
+/*
+ * (C) Copyright 2001
+ * Denis Peter, MPL AG Switzerland
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ */
+#ifndef	_CMD_SCSI_H
+#define	_CMD_SCSI_H
+
+#include <common.h>
+#include <command.h>
+
+
+#if (CONFIG_COMMANDS & CFG_CMD_SCSI)
+
+#define	CMD_TBL_SCSI	MK_CMD_TBL_ENTRY(					\
+	"scsi",	4,	5,	1,	do_scsi,				\
+	"scsi    - SCSI sub-system\n",						\
+	"reset - reset SCSI controller\n"					\
+	"scsi info  - show available SCSI devices\n"				\
+	"scsi scan  - (re-)scan SCSI bus\n"					\
+	"scsi device [dev] - show or set current device\n"			\
+	"scsi part [dev] - print partition table of one or all SCSI devices\n"	\
+	"scsi read addr blk# cnt - read `cnt' blocks starting at block `blk#'\n"\
+	"     to memory address `addr'\n"					\
+),
+
+
+#define	CMD_TBL_SCSIBOOT	MK_CMD_TBL_ENTRY(					\
+	"scsiboot",	5,	3,	1,	do_scsiboot,					\
+	"scsiboot- boot from SCSI device\n",						\
+	"loadAddr dev:part\n"			\
+),
+
+int do_scsi (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
+int do_scsiboot (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
+
+
+#else
+#define CMD_TBL_SCSI
+#define CMD_TBL_SCSIBOOT
+#endif
+
+#endif	/* _CMD_SCSI_H */
+
diff --git a/include/cmd_usb.h b/include/cmd_usb.h
new file mode 100644
index 0000000..b7b4e83
--- /dev/null
+++ b/include/cmd_usb.h
@@ -0,0 +1,77 @@
+/*
+ * (C) Copyright 2001
+ * Denis Peter, MPL AG Switzerland
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ */
+#ifndef	_CMD_USB_H
+#define	_CMD_USB_H
+
+#include <common.h>
+#include <command.h>
+
+
+#if (CONFIG_COMMANDS & CFG_CMD_USB)
+
+#ifdef CONFIG_USB_STORAGE
+#define	CMD_TBL_USB	MK_CMD_TBL_ENTRY(					\
+	"usb",	4,	5,	1,	do_usb,				\
+	"usb     - USB sub-system\n",						\
+	"reset - reset (rescan) USB controller\n"					\
+	"usb  stop [f]  - stop USB [f]=force stop\n"				\
+	"usb  tree  - show USB device tree\n"				\
+	"usb  info [dev] - show available USB devices\n"				\
+	"usb  scan  - (re-)scan USB bus for storage devices\n"					\
+	"usb  device [dev] - show or set current USB storage device\n"			\
+	"usb  part [dev] - print partition table of one or all USB storage devices\n"	\
+	"usb  read addr blk# cnt - read `cnt' blocks starting at block `blk#'\n"\
+	"     to memory address `addr'\n"					\
+),
+
+
+#define	CMD_TBL_USBBOOT	MK_CMD_TBL_ENTRY(					\
+	"usbboot",	5,	3,	1,	do_usbboot,					\
+	"usbboot - boot from USB device\n",						\
+	"loadAddr dev:part\n"			\
+),
+
+#else
+#define	CMD_TBL_USB	MK_CMD_TBL_ENTRY(					\
+	"usb",	4,	5,	1,	do_usb,				\
+	"usb     - USB sub-system\n",						\
+	"reset - reset (rescan) USB controller\n"					\
+	"usb  tree  - show USB device tree\n"				\
+	"usb  info [dev] - show available USB devices\n"				\
+),
+
+#define CMD_TBL_USBBOOT
+#endif
+
+int do_usb (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
+int do_usbboot (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
+
+
+#else
+#define CMD_TBL_USB
+#define CMD_TBL_USBBOOT
+#endif
+
+#endif	/* _CMD_USB_H */
+
diff --git a/include/command.h b/include/command.h
new file mode 100644
index 0000000..9453c0d
--- /dev/null
+++ b/include/command.h
@@ -0,0 +1,90 @@
+/*
+ * (C) Copyright 2000
+ * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+/*
+ *  Definitions for Command Processor
+ */
+#ifndef __COMMAND_H
+#define __COMMAND_H
+
+#ifndef NULL
+#define NULL	0
+#endif
+
+#ifndef	__ASSEMBLY__
+/*
+ * Monitor Command Table
+ */
+
+struct cmd_tbl_s {
+	char		*name;		/* Command Name			*/
+	int		lmin;		/* minimum abbreviated length	*/
+	int		maxargs;	/* maximum number of arguments	*/
+	int		repeatable;	/* autorepeat allowed?		*/
+					/* Implementation function	*/
+	int		(*cmd)(struct cmd_tbl_s *, int, int, char *[]);
+	char		*usage;		/* Usage message	(short)	*/
+#ifdef	CFG_LONGHELP
+	char		*help;		/* Help  message	(long)	*/
+#endif
+};
+
+typedef struct cmd_tbl_s	cmd_tbl_t;
+
+extern	cmd_tbl_t cmd_tbl[];
+
+#ifdef	CFG_LONGHELP
+#define	MK_CMD_TBL_ENTRY(name,lmin,maxargs,rep,cmd,usage,help)	\
+				{ name, lmin, maxargs, rep, cmd, usage, help }
+#else	/* no help info */
+#define	MK_CMD_TBL_ENTRY(name,lmin,maxargs,rep,cmd,usage,help)	\
+				{ name, lmin, maxargs, rep, cmd, usage }
+#endif
+
+/* common/command.c */
+cmd_tbl_t *find_cmd(const char *cmd);
+
+/*
+ * Monitor Command
+ *
+ * All commands use a common argument format:
+ *
+ * void function (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
+ */
+
+typedef	void 	command_t (cmd_tbl_t *, int, int, char *[]);
+
+#endif	/* __ASSEMBLY__ */
+
+/*
+ * Command Flags:
+ */
+#define CMD_FLAG_REPEAT		0x0001	/* repeat last command		*/
+#define CMD_FLAG_BOOTD		0x0002	/* command is from bootd	*/
+
+/*
+ * Configurable monitor commands definitions have been moved
+ * to include/cmd_confdefs.h
+ */
+
+#endif	/* __COMMAND_H */
